2005年11月12日
川俣晶の縁側ソフトウェア技術雑記 total 2782 count

ブラウザ間非互換性: Firefoxはfor-in文で文字列を列挙できる

Written By: 川俣 晶連絡先

 やっと残業終わって帰ろうというときになって、こんなJavaScriptのブラウザ間非互換性を見つけていまいました。

内容 §

 Firefoxはfor-in文で文字列を列挙できるようです。

 これが可能なのはFirefoxだけのようです。

 Firefox 1.0.7では可能。Internet Explorer 6.0とOpera 8.5ではできませんでした。

検証プログラム §

 以下をWebブラウザのアドレス欄に入力します。

javascript:var s="abc"; for( var i in "abc" ) { alert(s[i]); }

 Firefox 1.0.7の場合のみ、3回メッセージが表示され、それぞれ"a", "b", "c"となります。

 Internet Explorer 6.0とOpera 8.5では何も表示されません。

対策 §

 きちんと調べていませんが。

 .NET Frameworkでは文字列がforeach構文で列挙できるのはよくある機能なのでうっかり流されそうになりますが、たぶんJavaScriptには無い機能ではないかと思います。

 このような機能を、.NET Frameworkプログラミングのノリで使わないように注意すれば良いでしょう。

感想 §

 しかし、.NET Frameworkのノリで使えてしまうのが同じMSのIEではなくFirefoxというのが不思議。